package com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.interview;

import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.interview.dto.BusinessEmployeeInterviewRecordsListCloudDto;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.interview.param.BusinessEmployeeInterviewRecordsCreateCloudParam;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.interview.param.BusinessEmployeeInterviewRecordsDeleteCloudParam;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.interview.param.BusinessEmployeeInterviewRecordsListCloudParam;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.interview.param.BusinessEmployeeInterviewRecordsUpdateCloudParam;
import com.youkeyi.ddy.cloud.common.response.ResponseContent;
import io.swagger.annotations.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * 员工面试记录
 *
 * @author  liuxiawang
 * @Date 5/24/22 10:36 PM
 * @Location shenzhen.china
 */
@Api(tags = {"【BUSINESS】Employee Interview Records Management"})
@RestController
@FeignClient(value = "YOUKEYI-DDY-CLOUD-APPLICATION-BUSINESS", fallback = BusinessEmployeeInterviewRecordsCloudServiceFallback.class)
@RequestMapping("/business/employee/interview/records")
public interface BusinessEmployeeInterviewRecordsCloudService {

    // 查询员工面试记录列表
    @ApiOperation(value = "Query Employee Interview Records List", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.education.BusinessEmployeeInterviewRecordsCloudService.list")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = BusinessEmployeeInterviewRecordsListCloudDto.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "query", value = "Param of Query Employee Interview Records List", dataType = "BusinessEmployeeInterviewRecordsListCloudParam", dataTypeClass = BusinessEmployeeInterviewRecordsListCloudParam.class),
    })
    @GetMapping
    public abstract BusinessEmployeeInterviewRecordsListCloudDto list(BusinessEmployeeInterviewRecordsListCloudParam param);

    // 创建员工面试记录
    @ApiOperation(value = "Create Employee Interview Records", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.education.BusinessEmployeeInterviewRecordsCloudService.create")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = ResponseContent.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "body", value = "Param of Create Employee Interview Records ", dataType = "BusinessEmployeeInterviewRecordsCreateCloudParam", dataTypeClass = BusinessEmployeeInterviewRecordsCreateCloudParam.class),
    })
    @PostMapping("/create")
    public abstract ResponseContent create(@RequestBody BusinessEmployeeInterviewRecordsCreateCloudParam param);


    // 编辑员工面试记录
    @ApiOperation(value = "Update Employee Interview Records", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.education.BusinessEmployeeInterviewRecordsCloudService.update")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = ResponseContent.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "body", value = "Param of Update Employee Interview Records ", dataType = "BusinessEmployeeInterviewRecordsUpdateCloudParam", dataTypeClass = BusinessEmployeeInterviewRecordsUpdateCloudParam.class),
    })
    @PatchMapping("update")
    public abstract ResponseContent update(@RequestBody BusinessEmployeeInterviewRecordsUpdateCloudParam param);


    // 删除员工面试记录
    @ApiOperation(value = "Delete Employee Interview Records", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.education.BusinessEmployeeInterviewRecordsCloudService.delete")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = ResponseContent.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "query", value = "Param of Delete Employee Interview Records ", dataType = "BusinessEmployeeInterviewRecordsDeleteCloudParam", dataTypeClass = BusinessEmployeeInterviewRecordsDeleteCloudParam.class),
    })
    @DeleteMapping("/delete")
    public abstract ResponseContent delete(BusinessEmployeeInterviewRecordsDeleteCloudParam param);

}
